package com.jyxd.web.hiscz.dto.patient;


import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.jyxd.web.hiscz.dto.CodingDto;
import com.jyxd.web.hiscz.dto.checkout_report.Report.HandleDto;
import com.jyxd.web.hiscz.dto.patient.patient_visit.AccountInfoDto;
import com.jyxd.web.hiscz.dto.patient.patient_visit.AttendingPatientLocationDto;
import com.jyxd.web.hiscz.dto.patient.patient_visit.CommentDto;
import com.jyxd.web.hiscz.dto.patient.patient_visit.PatientLocationDto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Date;
import java.util.List;

@ApiModel("患者就诊信息")
@Data
public class PatientVisitDto {

    @JsonProperty(value = "PatientClass")
    @ApiModelProperty(name = "患者就诊类型(I-住院)")
    private String patientClass;

    @JsonProperty(value = "VisitNumber")
    @ApiModelProperty(name = "就诊流水号")
    private String visitNumber;

    @JsonProperty(value = "BabyVisitNumber")
    @ApiModelProperty(name = "婴儿序号")
    private String babyVisitNumber;

    @JsonProperty(value = "VisitCount")
    @ApiModelProperty(name = "住院次数")
    private Integer visitCount;

    @JsonProperty(value = "AdmissionType")
    @ApiModelProperty(name = "入院类型：R-常规入院 N-新生儿入院 B-母婴同床")
    private CodingDto admissionType;

    @JsonProperty(value = "AdmitSource")
    @ApiModelProperty(name = "入院方式(1-门诊转入,2-急诊转入,3-转院转入,9-其他)")
    private CodingDto admitSource;

    @JsonProperty(value = "PatientLocation")
    @ApiModelProperty(name = "患者入院(入科)信息")
    private PatientLocationDto patientLocation;

    @JsonProperty(value = "PriorPatientLocation")
    @ApiModelProperty(name = "患者出科信息")
    private PatientLocationDto priorPatientLocation;

    @JsonProperty(value = "HandleList")
    @ApiModelProperty(name = "患者登记信息")
    private List<HandleDto> handleList;

    @JsonProperty(value = "CriticalLevel")
    @ApiModelProperty(name = "危重级别标识")
    private CodingDto criticalLevel;

    @JsonProperty(value = "IsUnderObservation")
    @ApiModelProperty(name = "急诊留观标志（向后兼容）")
    private String isUnderObservation;

    @JsonProperty(value = "UnderObsIndicator")
    @ApiModelProperty(name = "急诊留观标志")
    private Long underObsIndicator;

    @JsonProperty(value = "SpecificIndicator")
    @ApiModelProperty(name = "特需标志 0-非特需,1-特需")
    private String specificIndicator;

    @JsonProperty(value = "InsuranceClass")
    @ApiModelProperty(name = "医疗保险类别标识")
    private CodingDto insuranceClass;

    @JsonProperty(value = "CommentList")
    @ApiModelProperty(name = "患者备注信息")
    private List<CommentDto> CommentList;

    @JsonProperty(value = "VisitStatus")
    @ApiModelProperty(name = "患者当前就诊状态")
    private CodingDto visitStatus;

    @JsonProperty(value = "NurseType")
    @ApiModelProperty(name = "护理标识")
    private CodingDto nurseType;

    @JsonProperty(value = "DietType")
    @ApiModelProperty(name = "膳食标识")
    private CodingDto dietType;


    @JsonProperty(value = "DischargeWay")
    @ApiModelProperty(name = "出院方式标识")
    private CodingDto dischargeWay;

    @JsonProperty(value = "DischargeStatus")
    @ApiModelProperty(name = "出院状态标识")
    private CodingDto dischargeStatus;

    @JsonProperty(value = "Voucher")
    @ApiModelProperty(name = "患者凭证标识")
    private CodingDto voucher;

    @JsonProperty(value = "HandleTime")
    @ApiModelProperty(name = "患者出区时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date handleTime;

    @JsonProperty(value = "NeedFollowUp")
    @ApiModelProperty(name = "随访标志：0-无需随访 1-需要随访")
    private Long needFollowUp;

    @JsonProperty(value = "ClinicalPathID")
    @ApiModelProperty(name = "临床路径ID")
    private String clinicalPathID;

    @JsonProperty(value = "AttendingPatientLocation")
    @ApiModelProperty(name = "患者第一次入院位置")
    private AttendingPatientLocationDto attendingPatientLocation;

    @JsonProperty(value = "OutHandleTime")
    @ApiModelProperty(name = "患者出院时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date outHandleTime;

    @JsonProperty(value = "AccountInfo")
    @ApiModelProperty(name = "患者账号信息")
    private AccountInfoDto accountInfo;

}
